﻿using System;

namespace Framework
{
    public interface IEventListener
    {
        public void AddListener<T>(string eventName, Action<T> handler);

        public void AddListener(string eventName, Action handler);

        public void AddListener<T, U>(string eventName, Action<T, U> handler);

        public void AddListener<T, U, V>(string eventName, Action<T, U, V> handler);

        public void AddListener<T, U, V, W>(string eventName, Action<T, U, V, W> handler);

        public void Cleanup();

        public void RemoveEvents(string eventName);

        public void RemoveListener(string eventName, Action handler);

        public void RemoveListener<T>(string eventName, Action<T> handler);

        public void RemoveListener<T, U>(string eventName, Action<T, U> handler);

        public void RemoveListener<T, U, V>(string eventName, Action<T, U, V> handler);

        public void RemoveListener<T, U, V, W>(string eventName, Action<T, U, V, W> handler);
    }
}